package com.kyl.entity;

import com.kyl.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 告警规则实体类，继承自BaseEntity
 * 用于定义设备告警的相关规则和参数
 */
@Data
@ApiModel(value = "告警规则实体类", description="对应数据库中告警规则表结构")
public class AlertRule extends BaseEntity {

    /**
     * 报警生效时段
     * 指定告警规则在一天中的特定时间段内生效
     */
    @ApiModelProperty(value = "告警生效时段")
    private String alertEffectivePeriod;

    /**
     * 告警规则名称
     * 描述性字段，用于标识和管理告警规则
     */
    @ApiModelProperty(value = "告警规则名称")
    private String alertRuleName;

    /**
     * 报警沉默周期
     * 在触发告警后的一段时间内，不再重复发送告警通知，避免频繁报警
     */
    @ApiModelProperty(value = "告警沉默周期")
    private Integer alertSilentPeriod;

    /**
     * 数据聚合周期
     * 指定在计算统计值时，数据采集的时间窗口长度
     */
    @ApiModelProperty(value = "数据聚合周期")
    private Integer dataAggregationPeriod;

    /**
     * 设备名称
     * 关联的设备标识，用于指定规则适用的设备
     */
    @ApiModelProperty(value = "设备名称")
    private String deviceName;

    /**
     * 持续周期
     * 规则触发条件之一，事件需持续多长时间才被视为违规
     */
    @ApiModelProperty(value = "持续周期")
    private Integer duration;

    /**
     * 功能标识
     * 设备功能的唯一标识符，用于关联特定的功能
     */
    @ApiModelProperty(value = "功能标识")
    private String functionId;

    /**
     * 功能名称
     * 设备功能的描述性名称，便于理解功能用途
     */
    @ApiModelProperty(value = "功能名称")
    private String functionName;

    /**
     * 模块的key
     * 关联的模块标识，用于指定规则适用的模块
     */
    @ApiModelProperty(value = "模块的key")
    private String moduleId;

    /**
     * 模块名称
     * 模块的描述性名称，用于管理模块化规则
     */
    @ApiModelProperty(value = "模块名称")
    private String moduleName;

    /**
     * 运算符
     * 数学运算符，用于定义规则触发条件（如>、<、==）
     */
    @ApiModelProperty(value = "运算符")
    private String operator;

    /**
     * 所属产品的key
     * 产品标识符，用于关联规则到特定产品
     */
    @ApiModelProperty(value = "所属产品的key")
    private String productId;

    /**
     * 产品名称
     * 产品的描述性名称，用于管理产品相关规则
     */
    @ApiModelProperty(value = "产品名称")
    private String productName;

    /**
     * 接入设备
     * 关联的设备信息，可能包含多个设备，用以指定规则适用的设备范围
     */
    @ApiModelProperty(value = "接入设备")
    private String relatedDevice;

    /**
     * 备注
     * 附加信息，用于记录规则的额外说明或注意事项
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 统计字段
     * 数据统计时所依据的字段，用于计算统计值
     */
    @ApiModelProperty(value = "统计字段")
    private String statisticField;

    /**
     * 0 禁用 1启用
     * 规则的状态，决定规则是否生效
     */
    @ApiModelProperty(value = "0 禁用 1启用")
    private Integer status;

    /**
     * 阈值
     * 规则触发的阈值，当统计值达到或超过此值时，规则被触发
     */
    @ApiModelProperty(value = "阈值")
    private Float value;

}
